package co.edu.pedagogica.recibo.helper;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;

/**
 *
 * @author Juan Sebastian Hernández Serrato
 */
public class ElementoPDF {
    
    public static PdfPCell celda(Paragraph contenido, boolean borde, int numeroDeColumnas, int numeroDeFilas, int posicion){
        PdfPCell celda = new PdfPCell(new Phrase(contenido));
        if( posicion == PdfPCell.ALIGN_CENTER || posicion == PdfPCell.ALIGN_LEFT ||
            posicion == PdfPCell.ALIGN_RIGHT || posicion == PdfPCell.ALIGN_JUSTIFIED){
            celda.setHorizontalAlignment(posicion);
        }
        if(!borde){
            celda.setBorder(PdfPCell.NO_BORDER);
        }
        if(numeroDeColumnas>1){
            celda.setColspan(numeroDeColumnas);
        }
        if(numeroDeFilas>1){
            celda.setRowspan(numeroDeFilas);
        }
        return celda;
    }
        
    public static PdfPCell celda(Paragraph contenido, boolean  borde){
        return celda(contenido, borde, 1, 1, PdfPCell.ALIGN_LEFT);
    }
    
    public static PdfPCell celda(Paragraph contenido, boolean  borde, int posicion){
        return celda(contenido, borde, 1, 1, posicion);
    }
    
    public static PdfPCell celda(Paragraph contenido, boolean borde, int numeroDeColumnas, int numeroDeFilas){
        return celda(contenido, borde, numeroDeColumnas, numeroDeFilas, PdfPCell.ALIGN_LEFT);
    }
    
    public static PdfPCell celda(Image imagen, boolean borde){
        PdfPCell celda = new PdfPCell(imagen);
        if(!borde){
            celda.setBorder(PdfPCell.NO_BORDER);
        }
        return celda;
    }
    
    public static PdfPTable tablaDeBordeExterior(PdfPTable tablaOriginal){
        PdfPTable tablaParaBorde = new PdfPTable(1);
        tablaParaBorde.setWidthPercentage(tablaOriginal.getWidthPercentage());
        PdfPCell celdaParaBorde = new PdfPCell(tablaOriginal);
        celdaParaBorde.setBorder(Rectangle.BOX);
        tablaParaBorde.addCell(celdaParaBorde);
        return tablaParaBorde;
    }
    
    public static Paragraph crearParrafo(String contenido, Font.FontFamily tipoDeLetra, int fontSize){
        return new Paragraph(contenido, new Font(tipoDeLetra, fontSize));
    }
    
    public static Paragraph crearParrafo(String contenido, int fontSize){
        return new Paragraph(contenido, new Font(Font.FontFamily.HELVETICA, fontSize));
    }
    
    public static Paragraph crearParrafo(String contenido){
        return new Paragraph(contenido, new Font(Font.FontFamily.HELVETICA, 8));
    }
}
